#include <iostream>
using namespace std;
int f[50][50];
int a[50];
int root[50][50];
void dfs(int l,int r)
{
    if(l>r) return;
    int k=root[l][r];
    cout<<k<<' ';
    dfs(l,k-1); dfs(k+1,r);
}
int main()
{
    int n;
    cin>>n;
    
    for(int i=1;i<=n;i++) cin>>a[i];
    
    for(int len=1;len<=n;len++)
    {
        for(int l=1;l+len-1<=n;l++)
        {
            int r=l+len-1;
            if(l==r)
            {
                f[l][r]=a[l];
                root[l][r]=l;
                continue;
            }
            for(int k=l;k<=r;k++)
            {
                int left= k-1>=l?f[l][k-1]:1;
                int right=k+1<=r?f[k+1][r]:1;
                
                if(f[l][r]<left*right+a[k])
                {
                    root[l][r]=k;
                    f[l][r]=left*right+a[k];
                }
            }
        }
    }
    
    cout<<f[1][n]<<endl;
    
    dfs(1,n);
    
    return 0;
}
